package connections

import (
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
	"im-server-go/config"
	"log"
)

type mysqlDB struct {
	DB *gorm.DB
}

var mysqlDb = &mysqlDB{}

func initMySql() {
	dsn := config.MysqlCfg.XConfig.FormatDSN()
	db, err := gorm.Open("mysql", dsn)
	if err != nil {
		log.Fatalf("连接数据库失败：%s", err.Error())
	}

	mysqlDb.DB = db
	mysqlDb.DB.DB().SetConnMaxLifetime(config.MysqlCfg.ConnMaxLifeTime)
	mysqlDb.DB.DB().SetMaxIdleConns(config.MysqlCfg.MaxIdleConns)
	mysqlDb.DB.DB().SetMaxOpenConns(config.MysqlCfg.MaxOpenConns)
	mysqlDb.DB.LogMode(config.MysqlCfg.Sql)
	mysqlDb.DB.SingularTable(true)

	err = mysqlDb.DB.DB().Ping()
	if err != nil {
		log.Fatalf("ping mysql err:：%s", err.Error())
	}
}

func GetInstance() *gorm.DB {
	return mysqlDb.DB
}
